package com.study.thread.sync;

/**
 * 锁消除技术：
 * JIT编译器会在即时编译的时候使用一种（逃逸分析），看当前锁是不是没有逃出函数外或会不会被另一个线程使用，当判断只有一个线程执行的时候
 * 则会进行锁消除，则不会在请求锁和释放锁，来提高执行速度
 * <p>
 * 锁粗化
 * JIT编译器会在动态编译的时候，把相邻的锁的同步代码块合并在一起，保证不会重复的请求锁和释放锁！
 */
public class DelSynchonzed {
//    private Object object = new Object();

    public void delSync() {
        Object lock = new Object();
        synchronized (lock) {
            System.out.println("del Sync");
        }
        synchronized (lock) {
            System.out.println("del Sync");
        }
    }

    public static void stbDelSync() {
        long beginTime = System.currentTimeMillis();
        for (int i = 0; i < 50000000; i++) {
            StringBuffer sbf = new StringBuffer();
            sbf.append(i);
        }
        long endTime = System.currentTimeMillis();
        System.out.println("耗时：" + (endTime - beginTime));
    }

    public static void main(String[] args) {
        stbDelSync();
    }

}
